home *** CD-ROM | disk | FTP | other *** search
/ C++ für Kids / C++ for kids.iso / SETUP / US / CBUILDER / DATA.Z / CONTROLS.INT < prev    next >
Text File  |  1997-02-13  |  26KB  |  711 lines

  1.  
  2. {*******************************************************}
  3. {                                                       }
  4. {       Delphi Visual Component Library                 }
  5. {                                                       }
  6. {       Copyright (c) 1995,96 Borland International     }
  7. {                                                       }
  8. {*******************************************************}
  9.  
  10. unit Controls;
  11.  
  12. {$P+,S-,W-,R-}
  13. {$C PRELOAD}
  14.  
  15. interface
  16.  
  17. {$R CONTROLS}
  18.  
  19. uses Messages, Windows, Classes, Sysutils, Graphics, Menus, CommCtrl, Imm;
  20.  
  21. { VCL control message IDs }
  22.  
  23. const
  24.   CM_BASE                   = $B000;
  25.   CM_ACTIVATE               = CM_BASE + 0;
  26.   CM_DEACTIVATE             = CM_BASE + 1;
  27.   CM_GOTFOCUS               = CM_BASE + 2;
  28.   CM_LOSTFOCUS              = CM_BASE + 3;
  29.   CM_CANCELMODE             = CM_BASE + 4;
  30.   CM_DIALOGKEY              = CM_BASE + 5;
  31.   CM_DIALOGCHAR             = CM_BASE + 6;
  32.   CM_FOCUSCHANGED           = CM_BASE + 7;
  33.   CM_PARENTFONTCHANGED      = CM_BASE + 8;
  34.   CM_PARENTCOLORCHANGED     = CM_BASE + 9;
  35.   CM_HITTEST                = CM_BASE + 10;
  36.   CM_VISIBLECHANGED         = CM_BASE + 11;
  37.   CM_ENABLEDCHANGED         = CM_BASE + 12;
  38.   CM_COLORCHANGED           = CM_BASE + 13;
  39.   CM_FONTCHANGED            = CM_BASE + 14;
  40.   CM_CURSORCHANGED          = CM_BASE + 15;
  41.   CM_CTL3DCHANGED           = CM_BASE + 16;
  42.   CM_PARENTCTL3DCHANGED     = CM_BASE + 17;
  43.   CM_TEXTCHANGED            = CM_BASE + 18;
  44.   CM_MOUSEENTER             = CM_BASE + 19;
  45.   CM_MOUSELEAVE             = CM_BASE + 20;
  46.   CM_MENUCHANGED            = CM_BASE + 21;
  47.   CM_APPKEYDOWN             = CM_BASE + 22;
  48.   CM_APPSYSCOMMAND          = CM_BASE + 23;
  49.   CM_BUTTONPRESSED          = CM_BASE + 24;
  50.   CM_SHOWINGCHANGED         = CM_BASE + 25;
  51.   CM_ENTER                  = CM_BASE + 26;
  52.   CM_EXIT                   = CM_BASE + 27;
  53.   CM_DESIGNHITTEST          = CM_BASE + 28;
  54.   CM_ICONCHANGED            = CM_BASE + 29;
  55.   CM_WANTSPECIALKEY         = CM_BASE + 30;
  56.   CM_INVOKEHELP             = CM_BASE + 31;
  57.   CM_WINDOWHOOK             = CM_BASE + 32;
  58.   CM_RELEASE                = CM_BASE + 33;
  59.   CM_SHOWHINTCHANGED        = CM_BASE + 34;
  60.   CM_PARENTSHOWHINTCHANGED  = CM_BASE + 35;
  61.   CM_SYSCOLORCHANGE         = CM_BASE + 36;
  62.   CM_WININICHANGE           = CM_BASE + 37;
  63.   CM_FONTCHANGE             = CM_BASE + 38;
  64.   CM_TIMECHANGE             = CM_BASE + 39;
  65.   CM_TABSTOPCHANGED         = CM_BASE + 40;
  66.   CM_UIACTIVATE             = CM_BASE + 41;
  67.   CM_UIDEACTIVATE           = CM_BASE + 42;
  68.   CM_DOCWINDOWACTIVATE      = CM_BASE + 43;
  69.   CM_CONTROLLISTCHANGE      = CM_BASE + 44;
  70.   CM_GETDATALINK            = CM_BASE + 45;
  71.   CM_CHILDKEY               = CM_BASE + 46;
  72.   CM_DRAG                   = CM_BASE + 47;
  73.   CM_HINTSHOW               = CM_BASE + 48;
  74.   CM_DIALOGHANDLE           = CM_BASE + 49;
  75.   CM_ISTOOLCONTROL          = CM_BASE + 50;
  76.   CM_RECREATEWND            = CM_BASE + 51;
  77.   CM_INVALIDATE             = CM_BASE + 52;
  78.  
  79. { VCL control notification IDs }
  80.  
  81. const
  82.   CN_BASE              = $BC00;
  83.   CN_CHARTOITEM        = CN_BASE + WM_CHARTOITEM;
  84.   CN_COMMAND           = CN_BASE + WM_COMMAND;
  85.   CN_COMPAREITEM       = CN_BASE + WM_COMPAREITEM;
  86.   CN_CTLCOLORBTN       = CN_BASE + WM_CTLCOLORBTN;
  87.   CN_CTLCOLORDLG       = CN_BASE + WM_CTLCOLORDLG;
  88.   CN_CTLCOLOREDIT      = CN_BASE + WM_CTLCOLOREDIT;
  89.   CN_CTLCOLORLISTBOX   = CN_BASE + WM_CTLCOLORLISTBOX;
  90.   CN_CTLCOLORMSGBOX    = CN_BASE + WM_CTLCOLORMSGBOX;
  91.   CN_CTLCOLORSCROLLBAR = CN_BASE + WM_CTLCOLORSCROLLBAR;
  92.   CN_CTLCOLORSTATIC    = CN_BASE + WM_CTLCOLORSTATIC;
  93.   CN_DELETEITEM        = CN_BASE + WM_DELETEITEM;
  94.   CN_DRAWITEM          = CN_BASE + WM_DRAWITEM;
  95.   CN_HSCROLL           = CN_BASE + WM_HSCROLL;
  96.   CN_MEASUREITEM       = CN_BASE + WM_MEASUREITEM;
  97.   CN_PARENTNOTIFY      = CN_BASE + WM_PARENTNOTIFY;
  98.   CN_VKEYTOITEM        = CN_BASE + WM_VKEYTOITEM;
  99.   CN_VSCROLL           = CN_BASE + WM_VSCROLL;
  100.   CN_KEYDOWN           = CN_BASE + WM_KEYDOWN;
  101.   CN_KEYUP             = CN_BASE + WM_KEYUP;
  102.   CN_CHAR              = CN_BASE + WM_CHAR;
  103.   CN_SYSKEYDOWN        = CN_BASE + WM_SYSKEYDOWN;
  104.   CN_SYSCHAR           = CN_BASE + WM_SYSCHAR;
  105.   CN_NOTIFY            = CN_BASE + WM_NOTIFY;
  106.  
  107. { TModalResult values }
  108.  
  109. const
  110.   mrNone   = 0;
  111.   mrOk     = idOk;
  112.   mrCancel = idCancel;
  113.   mrAbort  = idAbort;
  114.   mrRetry  = idRetry;
  115.   mrIgnore = idIgnore;
  116.   mrYes    = idYes;
  117.   mrNo     = idNo;
  118.   mrAll    = mrNo + 1;
  119.  
  120. { Cursor identifiers }
  121.  
  122. { Cursor type }
  123. type
  124.   TCursor = -32768..32767;
  125.  
  126. const
  127.   crDefault     = TCursor(0);
  128.   crNone        = TCursor(-1);
  129.   crArrow       = TCursor(-2);
  130.   crCross       = TCursor(-3);
  131.   crIBeam       = TCursor(-4);
  132.   crSize        = TCursor(-5);
  133.   crSizeNESW    = TCursor(-6);
  134.   crSizeNS      = TCursor(-7);
  135.   crSizeNWSE    = TCursor(-8);
  136.   crSizeWE      = TCursor(-9);
  137.   crUpArrow     = TCursor(-10);
  138.   crHourGlass   = TCursor(-11);
  139.   crDrag        = TCursor(-12);
  140.   crNoDrop      = TCursor(-13);
  141.   crHSplit      = TCursor(-14);
  142.   crVSplit      = TCursor(-15);
  143.   crMultiDrag   = TCursor(-16);
  144.   crSQLWait     = TCursor(-17);
  145.   crNo          = TCursor(-18);
  146.   crAppStart    = TCursor(-19);
  147.   crHelp        = TCursor(-20);
  148.  
  149. type
  150.  
  151. { Forward declarations }
  152.  
  153.   TDragObject = class;
  154.   TControl = class;
  155.   TWinControl = class;
  156.   TCustomImageList = class;
  157.  
  158. { VCL control message records }
  159.  
  160.   TCMActivate = TWMNoParams;
  161.   TCMDeactivate = TWMNoParams;
  162.   TCMGotFocus = TWMNoParams;
  163.   TCMLostFocus = TWMNoParams;
  164.   TCMDialogKey = TWMKey;
  165.   TCMDialogChar = TWMKey;
  166.   TCMHitTest = TWMNCHitTest;
  167.   TCMEnter = TWMNoParams;
  168.   TCMExit = TWMNoParams;
  169.   TCMDesignHitTest = TWMMouse;
  170.   TCMWantSpecialKey = TWMKey;
  171.  
  172.   TCMCancelMode = record
  173.     Msg: Cardinal;
  174.     Unused: Integer;
  175.     Sender: TControl;
  176.     Result: Longint;
  177.   end;
  178.  
  179.   TCMFocusChanged = record
  180.     Msg: Cardinal;
  181.     Unused: Integer;
  182.     Sender: TWinControl;
  183.     Result: Longint;
  184.   end;
  185.  
  186.   TCMControlListChange = record
  187.     Msg: Cardinal;
  188.     Control: TControl;
  189.     Inserting: LongBool;
  190.     Result: Longint;
  191.   end;
  192.  
  193.   TCMChildKey = record
  194.     Msg: Cardinal;
  195.     CharCode: Word;
  196.     Unused: Word;
  197.     Sender: TWinControl;
  198.     Result: Longint;
  199.   end;
  200.  
  201.   TDragMessage = (dmDragEnter, dmDragLeave, dmDragMove, dmDragDrop, dmDragCancel,
  202.     dmFindTarget);
  203.  
  204.   PDragRec = ^TDragRec;
  205.   TDragRec = record
  206.     Pos: TPoint;
  207.     Source: TDragObject;
  208.     Target: Pointer;
  209.   end;
  210.  
  211.   TCMDrag = packed record
  212.     Msg: Cardinal;
  213.     DragMessage: TDragMessage;
  214.     Reserved1: Byte;
  215.     Reserved2: Word;
  216.     DragRec: PDragRec;
  217.     Result: Longint;
  218.   end;
  219.  
  220. { Exception classes }
  221.  
  222.   EOutOfResources = class(EOutOfMemory);
  223.   EInvalidOperation = class(Exception);
  224.  
  225. { Dragging objects }
  226.  
  227.   TDragObject = class(TObject)
  228.   protected
  229.     function GetDragImages: TCustomImageList; virtual;
  230.     function GetDragCursor(Accepted: Boolean; X, Y: Integer): TCursor; virtual;
  231.     procedure Finished(Target: TObject; X, Y: Integer; Accepted: Boolean); virtual;
  232.   public
  233.     function Instance: THandle; virtual;
  234.     function GetName: string; virtual;
  235.     procedure HideDragImage; virtual;
  236.     procedure ShowDragImage; virtual;
  237.   end;
  238.  
  239.   TDragControlObject = class(TDragObject)
  240.   public
  241.     function GetDragImages: TCustomImageList; override;
  242.     function GetDragCursor(Accepted: Boolean; X, Y: Integer): TCursor; override;
  243.     procedure Finished(Target: TObject; X, Y: Integer; Accepted: Boolean); override;
  244.   protected
  245.     constructor Create(AControl: TControl);
  246.     property Control: TControl;
  247.     procedure HideDragImage; override;
  248.     procedure ShowDragImage; override;
  249.   end;
  250.  
  251. { Controls }
  252.  
  253.   TControlCanvas = class(TCanvas)
  254.   protected
  255.     procedure CreateHandle; override;
  256.   public
  257.     destructor Destroy; override;
  258.     procedure FreeHandle;
  259.     property Control: TControl;
  260.   end;
  261.  
  262.   TAlign = (alNone, alTop, alBottom, alLeft, alRight, alClient);
  263.  
  264.   TControlState = set of (csLButtonDown, csClicked, csPalette,
  265.     csReadingState, csAlignmentNeeded, csFocusing, csCreating,
  266.     csPaintCopy);
  267.  
  268.   TControlS